package com.study.reflect.example.ex04;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
* @Name: MyInvocationHandler
* @Description: 动态代理类：用来调用执行目标方法
* @Author: 李超	lc_jack@foxmail.com
* @CreateDate: 2017-1-17 下午9:09:29 
* @Version: V1.0
 */
public class MyInvocationHandler implements InvocationHandler {
	
	private Object target ; //目标对象
	

	public MyInvocationHandler(Object target) {
		this.target = target;
	}

	/**
	* @Name: invoke
	* @Description: 目标方法的代理方法：调用目标方法并返回结果
	* @Author: 李超	lc_jack@foxmail.com
	* @Version: V1.0
	* @CreateDate: 2017-1-17 下午9:11:30
	* @Parameters: Object 目标方法的代理对象
	* @Parameters: Object 目标方法对象
	* @Parameters: Object 目标方法实参
	* @Return: Object 目标方法的返回值
	 */
	@Override
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		System.out.println("权限校验");
		//使用目标方法对象，执行目标方法
		Object result = method.invoke(target) ;
		System.out.println("日志记录");
		return result;
	}

}









